﻿
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sproc_AddStaff]') AND type in (N'P', N'PC'))
    DROP PROCEDURE [dbo].[sproc_AddStaff];
GO
CREATE PROCEDURE [dbo].[sproc_AddStaff]
    @StaffName nvarchar(50),
    @Password nvarchar(255),
    @RealName nvarchar(50),
    @Sex int,
    @Status int,
    @Email nvarchar(500),
    @RegistedDate as datetime,
    @PositionID int,
    @Phone nvarchar(50)='',
    @Mobile nvarchar(50)='',
    @Birthday datetime=0,
    @Caste int = 0,
    @SystemRoleID int = 12
/*

=====================================================
功能:    新增员工
参数:
    @StaffName         员工的姓名
    @Password         登陆密码
    @RealName         真实姓名
    @Sex             性别
    @Status         状态(在职,离职...)
    @Email             电子邮件
    @RegistedDate as     注册日期
    @PositionID         所在职位
    @Phone             电话号码
    @Mobile         手机
    @Birthday         生日
    @SystemRoleID        系统角色ID(使用系统角色,
                使每个人可以有共同部分

=====================================================

*/
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON

declare @StaffID int;

--判断员工是否已经注册
if not exists(select 1 from dbo.uds_staff where staff_name = @StaffName)
begin

    begin transaction;

    --插入新来员工的记录
    insert into uds_staff (staff_name, [password], realname, sex, status, email, registeddate, Phone, Mobile, Birthday, Dimission, Caste)
        values(@StaffName,@Password,@RealName,@Sex,@Status,@Email,@RegistedDate,@Phone,@Mobile,@Birthday,0,@Caste);

    set @StaffID = @@IDENTITY;

    insert into uds_staff_in_position (staff_id, position_id) values(@StaffID, @PositionID);

    --把新来员工加入到系统角色里
    insert into uds_staff_in_role (staff_id, role_id) values(@StaffID,@SystemRoleID);

    --返回新来员工记录
    select * from uds_staff where staff_id = @StaffID;

    commit transaction;
    return 0;
end
else
begin
    --返回新来员工记录为空
    select * from uds_staff where 1 = 2;
    return -1;
end

END
GO